PRTOUT.TTP - Ein Drucker-Utility ******************************** 1. Wozu PRTOUT.TTP? =================== Es gibt doch viele Programme, die nichts weiter bewerkstelligen, als Dateien auf dem Drucker auszugeben. Einige sind sehr einfach, knapp und schnell, andere sehr aufwendig, bieten viele M”glich- keiten und befriedigen selbst pedantische Ansprche an die Quali- t„t eines Druckes. Wozu also noch ein weiteres Progr„mmchen, das nicht mehr kann als andere? Nun ja, zugegeben, PRTOUT.TTP kann nicht mehr als andere kurze Druck-Routinen. Es soll allein dazu dienen, eine reine ASCII- Datei auf dem Drucker auszugeben; das natrlich einfach und schnell. H”here Ansprche an Schrift, Druckqualit„t, weitere Optionen usw. soll es nicht erfllen. Fr diese Zwecke gibt es die Druckroutinen von Editor-, Text- und DTP-Programmen. Aber - und das ist nun ein wenig besonders - PRTOUT.TTP kann etwas, was weder die Druck-Routine des Betriebssystems noch so mancher anderer Editor-, Desktop- oder Druck-Routinen-Patch-Programme kann: Es kann einen linken Rand setzen! Wenn man mal schnell die DESKTOP.INF oder eine andere Konfi- gurationsdatei bzw. einen kurzen README- oder INFO-Text ausdrucken will, dann st”rt es vielleicht nicht nur mich, sondern auch andere, dass die gew”hnlichen Druck-Routinen immer in der ersten Spalte mit dem Druck beginnen. Gerade wenn man einen Tintenstrahldrucker verwendet, dessen Tinte gerne verschmiert, wenn Feuchtigkeit aufs Blatt ger„t, wird man es zu sch„tzen wissen, dass sich der Daumen nicht gleich auf die Schrift legt, sondern erst mal den Rand be- feuchten darf. Und ausserdem - wer verdeckt schon gern beim Lesen die Zeilenanf„nge mit den Fingern? 2. Die Bedienung: ================= Man startet PRTOUT.TTP mit einem Doppelklick, ber eine Taste, der es zugeordnet ist, oder ber eine andere Funktion, die im Desktop- oder Shell-Programm, das man verwendet, vorgesehen ist. Im MAGXDESK l„sst sich PRTOUT.TTP z. B. als Ersatz fr die Druck-Routine des Betriebssystems eintragen, so dass es jedesmal gestartet wird, wenn eine Datei zum Drucken aufgerufen wird. Nach dem Start erscheint eine Box, in der ein Dateiname und allenfalls Optionen angegeben werden k”nnen. Unter Umst„nden funktioniert auch die Methode, eine auszudruckende Datei auf das Programm-Ikon zu schieben, so dass diese direkt an PRTOUT.TTP weitergegeben wird. Unter TOS 2.06 und MagiC 2.0 und 4.0 hat dieses Vorgehen jedenfalls bei meinen Versuchen Erfolg gezeitigt. Optionen k”nnen unter Umst„nden auch als st„ndige Parameter des Programms definiert werden, wenn man es als Anwendung anmeldet und das verwendete Desktop-/Shell-Programm dabei die M”glichkeit solcher Parameter-Fest- legungen vorsieht (z. B. TOS 2.06). Optionen werden durch - und die nachfolgenden Buchstaben I,F,M,D,S und R angew„hlt. PRTOUT verh„lt sich dabei relativ tolerant. So k”nnen diese Buchstaben gross oder klein geschrieben werden. Sie drfen auch verdoppelt oder vervielfacht werden - das spielt keine Rolle. Wichtig ist nur, dass zwischen - und den Nachfolgenden Buchstaben keine Lcken stehen. Also: -iImDssssSSfF und „hnliches ist erlaubt, nicht aber - f s i oder „hnliches. Zwischen den Optionen und dem Dateinamen muss Space (Leerschlag) als Trenner stehen. Auch eine Schreibweise wie x:\datei-isfm name ist erlaubt (obwohl sich wohl niemand ernsthaft dafr entscheiden drfte), PRTOUT erkennt die Optionen und fgt den Dateinamen zusammen. NICHT abgesichert ist PRTOUT gegen Dateinamen, die - enthalten! An sich ist es unm”glich, einen - in die Dateiauswahl- box einzugeben, aber einzelne Programme wie SIGNUM3 haben eine Auswahlbox, die solche unerlaubten Zeichen akzeptiert. Da das Betriebssystem zwar normalerweise die Eingabe von - verhindert, aber Namen, die - enthalten, gleichwohl richtig verwaltet, k”nnten Dateien mit einem - im Namen schon mal vorkommen - und dann druckt PRTOUT sie nicht. Auch folgende Schreibweise ist m”glich: -I -F -M -R x:\dateiname. Aber nun zu den Optionen: -I/i weist PRTOUT an, vor dem Drucken den Drucker zu initialisieren. -F/f l”st nach Ende des Druckes einen Seitenvorschub bzw. den Auswurf des bedruckten Blattes (Formfeed) aus. -M/m und -D/d erzeugen einen Linksrand (engl. margin bzw. double margin). Bei M wird der Linksrand 4, bei D 8 Spalten breit. Ich habe daraufverzichtet, andere Breiten vorzusehen. Denn weniger als 4 Spalten sind kaum sinnvoll, bei mehr als 10 Spalten gibt es Probleme mit der Zeilenl„nge. Da ausserdem eine Art Konvention fr Tabulatorweiten besteht, die besagt, dass diese 4 oder 8 betragen sollen, habe ich mich entschieden, nur diese beiden Breiten vorzusehen. Dabei ist es aber so, dass man die Verantwortung dafr, dass die Zeilen nicht zu lang sind, selber tr„gt. Die Drucker, die berschiessende Zeilenenden verschlucken oder einfach an den Zeilenanfang (und allenfalls ber den dort schon stehenden Text) drucken, sind zum Glck heute auf dem Rckzug. Normalerweise springt der Drucker bei zu langen Zeilen einfach auf eine neue Zeile. Wenn das geschieht, erkennt PRTOUT dies nicht, und folglich wird dann OHNE Rand gedruckt. Kommt das nur vereinzelt vor, so st”rt es bei einem schnellen Probeausdruck jedoch kaum. Bei echtem Fliesstext, der keine Zeilenenden, sondern nur Abs„tze markiert, werden dementsprechend nur die Absatzanf„nge eingerckt. Nun noch eine Bemerkung zur Kombination von M und D: Kommen beide Optionen in der Eingabezeile vor, so richtet sich PRTOUT nach der letzten. -MD erzeugt also 8 Randspalten, -DM nur 4. -S/s bewirkt, dass á, Ý und ß auf IBM- bzw. Epson-kompatiblen Druckern richtig ausgedruckt werden und nicht als seltsame Zeichen erscheinen. Eine weitergehende Zeichenwandlung habe ich nicht vorgesehen, weil dies fr den genannten Zweck zu aufwendig w„re. Mit der Option -R/r schliesslich kann man den RS232-Port ansprechen. Dies deshalb, weil PRTOUT auf Ein-/Ausgabeumlenkung nicht anspricht (es wurde zwar unter Benutzung der GEMDOS-Funktionen geschrieben, die Umlenkung klappt in der Praxis aber nicht). Wer einen seriellen Drucker betreibt, kann es einmal damit versuchen. Vielleicht klappt es (ich habeselber keinen solchen Drucker, weshalb ich die Funktionstchtigkeit nicht erproben konnte). Noch ein Wort zu einem nicht unwichtigen Thema: Was geschieht, wenn der Drucker nicht eingeschaltet oder aus andern Grnden nicht ansprechbar ist? Dafr habe ich eine andere L”sung ge- w„hlt, als die blichen Desktop- oder Betriebssystem-Druck- Routinen aufweisen. Wie diese gibt PRTOUT.TTP KEINE Meldung aus, sondern friert gewissermassen ein. Es wartet jedoch NICHT 30 Sekunden ab und h”rt dann einfach auf, sondern versucht fortw„hrend den Drucker anzusprechen. Dabei kann kein einziges Zeichen verlorengehen; sobald der Drucker bereit ist, wird einwandfrei gedruckt, ohne dass Zeichenverluste eintreten. Das funktioniert auch w„hrend des Druckes. Unterbricht man etwa den Druck mit der Pause-, Local- oder wie-immer-sie-heisst- Taste, dann wartet PRTOUT ab, bis man den Modus wieder zurck- schaltet; dann f„hrt es mit dem Ausdruck des ersten noch nicht ausgegebenen Zeichens fort. Will man den Ausdruck abbrechen, muss man also den Drucker ausschalten und - sofern PRTOUT die Kontrolle noch nicht wieder ans Desktop zurckgegeben hat - auch den Computer selbst. 3. Beschr„nkungen: ================== Hier sollen ein paar Worte darber gesagt sein, was PRTOUT.TTP NICHT kann: Es kann nicht mehrere Dateien in Folge ausdrucken. Es ist also nicht m”glich, mehrere Dateinamen anzugeben - in diesem Fall geschieht einfach nichts. Das h„ngt damit zusammen, dass die Aus- wertungsroutine fr die Eingabezeile schon jetzt ziemlich umfang- reich ausgefallen ist. Ausserdem hat sich mir diese M”glichkeit in der Praxis nur ganz selten als wnschbar erwiesen. PRTOUT untersttzt im brigen auch keine Tabulatoren und keine Steuercodes ausser ASCII 10, 11 (Linefeed), 13 (Wagenrcklauf) und 12 (Formfeed). Ich sah die Notwendigkeit fr solche Steuer- zeichen nicht ein. Denn Tabulatoren wird man zweckm„ssigerweise in einfachen ASCII-Texten durch Leerzeichen ersetzen, und alle andern Steuerzeichen wirken sich bisweilen auf Drucker verheerend aus. Manchen Leuten mag es etwa wnschbar erscheinen, am Ende eines Textes ASCII 7 an den Drucker zu schicken - worauf dieser eigentlich ein Klingeln, Hupen oder Pfeifen von sich geben sollte. Gerade bei langen Dateien habe auch ich eine solche akustische "End-of-print"- Meldung gern, weil ich vielleicht unterdessen etwas anderes mache oder sogar den Raum verlasse. Bloss reagieren nicht alle Drucker vernnftig auf ASCII 7 - einige machen berhaupt nichts, andere geben zwar ein Ger„usch von sich, aber nur so leise wie ein M„uslein, wieder andere ziehen gleich ein neues Blatt ein oder aber im schlimmsten Fall - schalten sie in irgendwelche ausserirdischen Modi, aus denen sie nur durch Ausschalten und Wiedereinschalten zurckgeholt werden k”nnen. Die Zeit, als ich den guten alten 9-Nadel-Drucker getrost mit ASCII-7-Zeichen fttern konnte, worauf er mir durch lautstarkes Hornen „hnlich einem einlaufenden Schiff das Ende des Druckes anzeigte, egal in welchem Raum des Hauses ich mich befand, ist leider vorbei. Aus den genannten Grnden werden alle Zeichen ausser ASCII 10 bis 13 und 32 bis 255 einfach unterdrckt. 4. PD-Bestimmungen und Copyright: ================================= PRTOUT.TTP ist Public Domain und darf frei verwendet werden. Es bestehen dabei keinerlei Einschr„nkungen. Ich m”chte aber darauf hinweisen, dass es sinnvoll ist, nicht nur das Programm, sondern auch diesen Text an andere Personen weiterzugeben. Wer Fehler entdeckt, Implementierung anderer Optionen oder ein GFA-Basic-Listing des Programms wnscht, kann mir schreiben unter Beilage einer Diskette (aus Sicherheitsgrnden formatiere ich diese neu!). Ich verlange keinen finanziellen Beitrag, aber wenn mir jemand ein selbstgeschriebenes Tool oder Utility mitschickt, freue ich mich darber. Wer ganz sicher gehen will, dass ich bald antworte, soll auch einen internationalen Antwortschein mitschicken. * ACHTUNG: Der Besitz dieser Version von PRTOUT.TTP verleiht keinerlei * Rechte oder Ansprche an der englischen Version des Programms, die * getrennt in Umlauf ist! Auf dass es gut drucke Land auf und Land ab wnscht Philipp W„lchli Chemin du Compois 10 2533 Evilard - Schweiz -